% \OnlyDescription % \iffalse meta-comment % Copyright 1995 Gundolf Frank. % All rights reserved. For further copyright information see the file % legal.txt, and any other copyright indicated in this file. % This system is distributed in the hope that it will be useful, % but WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. % IMPORTANT NOTICE: % For error reports in case of UNCHANGED versions see bugs.txt. % Please do not request updates from us directly. Distribution is % done through Mail-Servers and TeX organizations. % You are not allowed to change this file. % You are allowed to distribute this file under the condition that % it is distributed together with all files mentioned in manifest.txt. % If you receive only some of these files from someone, complain! % You are NOT ALLOWED to distribute this file alone. You are NOT % ALLOWED to take money for the distribution or use of either this % file or a changed version, except for a nominal charge for copying % etc. % \fi %\CheckSum{2617} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} % \iffalse % \section{Identification} % This document class can only be used with \LaTeXe, so we make % sure that an appropriate message is displayed when another \TeX{} % format is used. % \begin{macrocode} %<+lettGF>\newcommand{\ClassName}{lettGF} \newcommand{\Version}{0.91$\beta$} %<+lettGF>\NeedsTeXFormat{LaTeX2e}[1994/12/01] % \end{macrocode} % Announce the Class name and its version. % \begin{macrocode} %<+lettGF>\ProvidesClass{\ClassName} %<10pt>\ProvidesFile{size10.clo} %<11pt>\ProvidesFile{size11.clo} %<12pt>\ProvidesFile{size12.clo} %\ProvidesFile{leqno.clo} %\ProvidesFile{fleqn.clo} %<*driver> \ProvidesFile{lettGF.drv} % [1995/07/26 v\Version %<+lettGF> Extended LaTeX document class from Standard LaTeX document class 'letter' %<+lettGF> Written by Gundolf Frank @ AC.Maus.de] %<10pt|11pt|12pt> Standard LaTeX file (size option)] % Standard LaTeX option (left equation numbers)] % Standard LaTeX option (flush left equations)] % \end{macrocode} % \section{The documentation driver file} % We have our own document class to format the \LaTeXe % documentation. % \begin{macrocode} %<*driver> \documentclass{ltxdoc} \usepackage{t1enc} % \end{macrocode} % We don't want everything to appear in the index. % \begin{macrocode} \DoNotIndex{\@M,\@badmath} \DoNotIndex{\@centercr} \DoNotIndex{\@empty,\@ignoretrue} \DoNotIndex{\@ixpt} \DoNotIndex{\@minus,\@ne,\@plus} \DoNotIndex{\\,\addtolength} \DoNotIndex{\advance,\Alph,\alph} \DoNotIndex{\arabic,\ast,\begin,\begingroup,\bfseries,\bgroup,\box} \DoNotIndex{\bullet} \DoNotIndex{\cdot,\cr,\day,\DeclareOption} \DoNotIndex{\def,\DocInput,\documentclass} \DoNotIndex{\DoNotIndex,\egroup,\ifx,\else,\fi,\endtrivlist} \DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup} \DoNotIndex{\endlist,\everycr,\ExecuteOptions} \DoNotIndex{\filedate,\filename,\fileversion} \DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule} \DoNotIndex{\hsize,\hskip,\hspace,\hss,\ifcase,\or,\fi} \DoNotIndex{\ifvmode,\fi,\ifnum,\fi,\input} \DoNotIndex{\kern,\leavevmode,\let,\leftmark} \DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark} \DoNotIndex{\month,\newcommand,\newcounter,\newenvironment} \DoNotIndex{\NeedsTeXFormat,\newdimen} \DoNotIndex{\newpage,\nobreak,\noindent,\number} \DoNotIndex{\p@} \DoNotIndex{\pagestyle,\par} \DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions} \DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright} \DoNotIndex{\refstepcounter,\relax,\renewcommand,\reset@font} \DoNotIndex{\rightmargin,\rlap,\rmfamily,\roman} \DoNotIndex{\roman,\setbox,\setcounter,\setlength} \DoNotIndex{\skip,\slshape,\space} \DoNotIndex{\trivlist,\typeout,\tw@} \DoNotIndex{\vskip,\vspace,\year,\z@} % \end{macrocode} % We do want an index, using linenumbers % \begin{macrocode} \CodelineNumbered \CodelineIndex \EnableCrossrefs \RecordChanges % \end{macrocode} % We use so many \file{docstrip} modules that we set the % \texttt{StandardModuleDepth} counter to 1. % \begin{macrocode} \setcounter{StandardModuleDepth}{1} % \end{macrocode} % The following command retrieves the date and version information % from the file. % \begin{macrocode} \GetFileInfo{lettGF.drv} % \end{macrocode} % Some commonly used abbreviations % \begin{macrocode} \newcommand*{\Lopt}[1]{\textsf {#1}} \newcommand*{\file}[1]{\texttt {#1}} \newcommand*{\Lcount}[1]{\textsl {\small#1}} \newcommand*{\pstyle}[1]{\textsl {#1}} % \end{macrocode} % We also want the full details. % \begin{macrocode} \begin{document} \DocInput{lettGF.dtx} \PrintIndex \PrintChanges \end{document} % % \end{macrocode} % \fi % \changes{v0.91$\beta$}{1995/8/1} % {\\ % -First version of LettGF.DTX} % \changes{v0.90$\beta$}{1995/7/26} % {\\ % -First version for \LaTeX2e{}.\\ % -The most parts work now with the Style 'ifthenelse'.\\ % -The MultiLetter-function is now more easy and better.\\ % -And more or less great changes are made with the translation % to \LaTeX2e{} (Option DIN (Din $\rightarrow$ a4paper etc.)} % \changes{v0.61$\beta$}{1994/12/12} % {\\ % -Error in the closingtext corrected.\\ % -Manual updated.\\ % -The Style is now shorter.\\ % -You can search now directly for a address in the datafile.}. % \changes{v0.60$\beta$}{1994/12/6} % {\\ % -Small error in the signature and picture corrected.\\ % -The INI-file is now new organised. Different User can use it now.} % \changes{v0.53$\beta$}{1994/5/2} % {\\ % -At multiletter every letter can get a new closingtext.\\ % -Faxnumber and email-address are now saved in the data-file.\\ % -You don't need any \% behind each line in the data-file.} % \changes{v0.52$\beta$}{1994/2/28} % {\\ % -In the data-file are only three posibilities at contact.\\ % -Controll output is killed.\\ % -Small Errors are corrected.} % \changes{v0.51$\beta$}{1994/2/26} % {\\ % -With Faxoption the total pagenumber is shown.\\ % -Error with the textlength is corrected.} % \changes{v0.50$\beta$}{1994/2/24} % {\\ % -First official betaversion.\\ % -New: Multiletterfunction.} % \iffalse % Copyright (C) 1995 Gundolf Frank, all rights reserved. % \fi % \author{ Gundolf Frank} % \title{Extended Letter Document Class for \LaTeX{} version \Version} % \date{\filedate} % \maketitle % \tableofcontents % \section{Introduction} % This \LaTeXe\ package is a reimplementation of % \texttt{brief.sty} by my own. It defines the class % |\begin{letter}| which produces letter of the current % document. % \section{Copyright and Your Rights} % Copyright 1995 Gundolf Frank. All rights reserved. % You are not allowed to change this part of the documentation. % \subsection{Distribution of unchanged versions:} % You are NOT ALLOWED to take money for the distribution or use of % these files except for a nominal charge for copying etc. % Redistribution of unchanged files is allowed provided that all files % listed in the corresponding package README file are distributed % including this readme file. % If you receive only some of these files from someone, complain! % However, if these files are distributed by established suppliers as % part of a complete TeX distribution, and the structure of the % distribution would make it difficult to distribute the whole set of % files, *those parties* are allowed to distribute only some of the % files provided that it is made clear that the user will get a % complete distribution-set upon request to that supplier (not me). % Notice that this permission is not granted to the end user. % \subsection{Generation and distribution of changed versions:} % The generation of changed versions of the files included in the % packages is allowed under the following restrictions: % \begin{itemize} % \item % You rename the file before you make any changes to it. % \item % You acknowledge the origin of the original version in the file and % keep the information that it (or a changed version) has to be % distributed under the restrictions mentioned in this file. % \item % You change the ERROR REPORT address so that we don't get error % reports for files *not* maintained by us. % \end{itemize} % The distribution of changed versions of the files included in the % packages is allowed under the following restrictions: % \begin{itemize} % \item % You provide the user with information how to obtain the original % package or, even better, distribute it with your files. % \item % You make sure that the changed versions contain a notice that % prevents others to take money for distribution or use of your % files, i.e. they have to be distributed under the restrictions % mentioned in this file. % \item % You inform us that you created a changed version of the files. % This is only necessary if you want to distribute it to others. % \end{itemize} % \subsection{Error reports:} % Before you report an error please check that % \begin{itemize} % \item % the error is not already mentioned in the *.bug file of the % distribution. (In this case it is a feature :-) % \item % the error isn't caused by obsolete versions of other software; % LaTeX from 1986 is a good candidate ... % \item % you use an original version of the package. % \end{itemize} % If you think you found a genuine bug please report it together % with the following information: % \begin{itemize} % \item % version of the file % \item % version (date!) of your LaTeX % \item % a short test file showing the behavior with all unnecessary % code removed. % \item % a transcript (log file) of the session that shows the error. % \end{itemize} % Please note that it is important to make the file as small as possible % to allow us to find and fix the error soon. % Error reports in case of UNCHANGED versions to\par % \begin{center} % \begin{tabular}{ll} % & Gundolf Frank\\ % & Triere Str.116\\ % & 52078 Aachen\\ % Internet:& \\ % Mausnet: & Gundolf Frank @ AC\\ % \end{tabular} % \end{center} % Please send error reports for contributed files to the original authors. % \section{The User Interface} % This section defines everything an average user should know. % All commands, which you can use in the original style from the \LaTeX % 3 team, are also available, only more commands are included. You % don't have to change anything in your old letters, only the output % looks a little bit other. % \subsection[\string\bslash\space package\{Multiletter\}] % {\bslash package\{MultiLetter\}} % The most difference in usage result from the including the package % , which handeles the addressfiles and of course the % multiletter function. So read also the documentation of this file, % which desribes the structure of the addressfile. % \subsection{The functions of the options} % \DeleteShortVerb{\|} % \begin{tabular}{|l|p{9cm}|} % \hline % a4paper & \\ % a5paper & \\ % b5paper & \\ % letterpaper & \\ % legalpaper & \\ % executivepaper & Chose the papersize.\\ % \hline % landscape & Switches the values of paperheight and % paperwidth.\\ % \hline % 10pt & \\ % 11pt & \\ % 12pt & Coosing the size of the characters.\\ % \hline % leqno & To put the equation number on the left side of an % equation.\\ % \hline % fleqn & To get the displayed math environments to print the % contents flush left (with an indentation).\\ % \hline % bank & Print the bankconnection in the footline.\\ % \hline % address & Print the fulladdress in the footline.\\ % \hline % noheader & Print no headline\\ % \hline % fax & Print on the first page some special fax thinks, % as the total pagenumber and time.\\ % \hline % german & \\ % english & Select the used languages.\\ % \hline % \end{tabular} % \MakeShortVerb{\|} % \subsection{An example} %\begin{verbatim} % \documentclass[12pt,a4paper,english]{lettgf} % \Signature{Zipper} % \Fromstreet{Liverpoolstr. 29} % \Fromlocation{DF-4567-Birmingthon} % \Fromname{Frank Zipper} % \begin{document} % \begin{letter}[firstname]{Thomas} % \opening{} % How are you. I write this letter without a special reason. % \closing{} % \end{letter} % \end{document} %\end{verbatim} % In this example any |Frank Zipper| write s a nosense letter to a person % with the first name |Thomas|. % \subsection[\string\bslash\space begin\{letter\}\{\ldots\}] {\bslash begin\{letter\}$[$\#1$]$\{\#2\}} % This command begins a letter with the name and the address. The first % parameter is the searchoption (e.g. firstname, fax, telephone) and the % second parameter the string you search for. The first one is optional. % The letter ends with |\end{letter}|. % \subsection[\string\bslash\space opening\{\ldots\}\& % \string\bslash\space closing\{\ldots\}] % {\bslash opening$[$\#1$]$\{\#2\}\& % \bslash closing\{\#1\}} % |\opening{\ldots}| und |\closing{\ldots}| writes the % text of the beginning and of the letter. It also sets the address. The % signature is set below the closing text and if you use the fax-option % the scanned signature is seted too. In the opening text you can put a % abbrevation in the first parameter and also in the closing, e.g. % |`Yf'| in the closing text you get |`Yours faithfully'| in the letter. % If you want to know more about it look in the source code under % option english in the -Style. % \StopEventually{} % \section{Loading Packages} % The class file needs three additional packages. % \begin{macrocode} %<*lettGF> \RequirePackage{ifthen} \RequirePackage{german} \RequirePackage{MultiLetter} % \end{macrocode} % \section{Initial Code} % In this part we define a few commands that are used later on. % \begin{macro}{\@ptsize} % This control sequence is used to store the second digit of the % pointsize we are typesetting in. So, normally, it's value is one % of 0, 1 or 2. % \begin{macrocode} %<*lettGF> \newcommand\@ptsize{} % \end{macrocode} % \end{macro} % \subsection{Setting Paper Sizes} % The variables |\paperwidth| and |\paperheight| should reflect the % physical paper size after trimming. For desk printer output this % is usually the real paper size since there is no post-processing. % \begin{macrocode} \DeclareOption{a4paper} {\setlength\paperheight {297mm}% \setlength\paperwidth {210mm}} \DeclareOption{a5paper} {\setlength\paperheight {210mm}% \setlength\paperwidth {148mm}} \DeclareOption{b5paper} {\setlength\paperheight {250mm}% \setlength\paperwidth {176mm}} \DeclareOption{letterpaper} {\setlength\paperheight {11in}% \setlength\paperwidth {8.5in}} \DeclareOption{legalpaper} {\setlength\paperheight {14in}% \setlength\paperwidth {8.5in}} \DeclareOption{executivepaper} {\setlength\paperheight {10.5in}% \setlength\paperwidth {7.25in}} % \end{macrocode} % The option \Lopt{landscape} switches the values of |\paperheight| % and |\paperwidth|, assuming the dimensions wer given for portrait % paper. % \begin{macrocode} \DeclareOption{landscape} {\setlength\@tempdima {\paperheight}% \setlength\paperheight {\paperwidth}% \setlength\paperwidth {\@tempdima}} % \end{macrocode} % \subsection{Choosing the type size} % The type size options are handled by defining |\@ptsize| to % contain the last digit of the size in question and branching on % |\ifcase| statements. This is done for historical reasons to stay % compatible with other packages that use the |\@ptsize| variable % to select special actions. It makes the declarations of size % options less than 10pt difficult, although one can probably use % \texttt{9} and \texttt{8} assuming that a class wont define both % \Lopt{8pt} and \Lopt{18pt} options. % \begin{macrocode} \DeclareOption{10pt}{\renewcommand\@ptsize{0}} \DeclareOption{11pt}{\renewcommand\@ptsize{1}} \DeclareOption{12pt}{\renewcommand\@ptsize{2}} % \end{macrocode} % \subsection{Two-side or one-side printing} % The option \Lopt{twoside} and option \Lopt{oneside} decide between % two-sided or one-sided printing % \begin{macrocode} \DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue} \DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse} % \end{macrocode} % \subsection{Draft option} % If the user requests \Lopt{draft} we show any overfull boxes. % We could probably add some more interesting stuff to this option. % \begin{macrocode} \DeclareOption{draft}{\setlength\overfullrule{5pt}} \DeclareOption{final}{\setlength\overfullrule{0pt}} % \end{macrocode} % \subsection{Equation numbering on the left} % The option \Lopt{leqno} can be used to get the equation numbers % on the left side of the equation. % \begin{macrocode} \DeclareOption{leqno}{\input{leqno.clo}} % \end{macrocode} % \subsection{Flush left displays} % The option \Lopt{fleqn} redefines the displayed math environments % in such a way that they come out flush left, with an indentation % of |\mathindent| from the prevailing left margin. % \begin{macrocode} \DeclareOption{fleqn}{\input{fleqn.clo}} % \end{macrocode} % \subsection{Bankconnection} % A new if to choose, whether the bankconnection is printed. % \begin{macrocode} \newboolean{bankconnection} \setboolean{bankconnection}{false} % \end{macrocode} % The option \Lopt{bank} decide, whether the bankconnection is printed in the % footline. % \begin{macrocode} \DeclareOption{bank}{\setboolean{bankconnection}{true}} % \end{macrocode} % \subsection{Full address} % A new if to choose, if the full address is printed. % \begin{macrocode} \newboolean{fulladdress} \setboolean{fulladdress}{false} % \end{macrocode} % The option \Lopt{address} decide, whether the full address is printed in the % footer. % \begin{macrocode} \DeclareOption{address}{\setboolean{fulladdress}{true}} % \end{macrocode} % \subsection{No headline} % A new if to choose, whether headline is printed. % \begin{macrocode} \newboolean{noheader} \setboolean{noheader}{false} % \end{macrocode} % The option \Lopt{fleqn} decide, whether the headline is printed. % \begin{macrocode} \DeclareOption{noheader}{\setboolean{noheader}{true}} % \end{macrocode} % \subsection{Fax} % A new if to choose, whether the letter is printed as fax. % \begin{macrocode} \newboolean{faxpaper} \setboolean{faxpaper}{false} % \end{macrocode} % The option \Lopt{fax} decide, whether specialparts of the faxpaper are % printed. % \begin{macrocode} \DeclareOption{fax}{\setboolean{faxpaper}{true}} % \end{macrocode} % \subsection{Languages} % In the letter several words appear. They are stored in control sequences % to be able to select a different language. % \subsubsection{German} % \begin{macrocode} \DeclareOption{german} {\germanTeX \xdef\banknamestr{Bank} \expandafter\def\csname\banknamestr\endcsname##1 {\def\bankname{##1}} \xdef\banknrstr{BLZ} \expandafter\def\csname\banknrstr\endcsname##1 {\def\banknr{##1}} \xdef\accountnrstr{Kontonummer} \expandafter\def\csname\accountnrstr\endcsname##1 {\def\accountnr{##1}} \providecommand{\bankconnectionstr}{Bankverbindung} \xdef\faxnrstr{Faxnummer} \expandafter\def\csname\faxnrstr\endcsname##1 {\def\myfax{##1}} \xdef\precodestr{Vorwahl} \expandafter\def\csname\precodestr\endcsname##1 {\def\precode{##1}} \xdef\telephonestr{Telefonnummer} \expandafter\def\csname\telephonestr\endcsname##1 {\def\telephonenum{##1}} \providecommand{\emailadrstr}{E-Mail-Adresse} \def\EMail##1{\def\myemail{##1}} \xdef\fromnamestr{Absendername} \expandafter\def\csname\fromnamestr\endcsname##1 {\def\fromname{##1}} \xdef\fromstreetstr{Absenderstrasse} \expandafter\def\csname\fromstreetstr\endcsname##1 {\def\fromstreet{##1}} \xdef\fromlocationstr{Absenderort} \expandafter\def\csname\fromlocationstr\endcsname##1 {\def\fromlocation{##1}} \xdef\fromsigstr{Unterschrift} \expandafter\def\csname\fromsigstr\endcsname##1 {\def\fromsig{##1}} \providecommand{\@datelong}{\dategerman} \providecommand{\@dateshort}{ \number\day.\number\month.\number\year} \xdef\datestr{Datum} \expandafter\def\csname\datestr\endcsname##1{\def\@date{##1}} \xdef\timestr{Uhrzeit} \expandafter\def\csname\timestr\endcsname##1{\def\@time{##1}} \newcommand{\psname}{PS.:} \newcommand{\Anlagen}[1]{encl{##1}} \newcommand{\Verteiler}[2]{cc{##1}} \newcommand{\pagenumstr}{Seitenanzahl} \newcommand{\yrefstr}{Ihr Zeichen} \newcommand{\mrefstr}{Mein Zeichen} \newcommand{\ymaildatestr}{Ihre Nachricht vom} \newcommand{\subjectstr}{} \newcommand{\Betrifft}[1]{\def\@subject{##1}} \newcommand{\Anrede}[2][empty]{\opening[##1]{##2}} \newcommand{\Gruss}[1]{\closing{##1}} \newcommand{\errormesc}{Es wurde bei \string\begin{letter} ein Suchkriterium\MessageBreak angegeben!} \newcommand{\errorhelpc}{Bei \string\begin{letter}[Optionen] {suchkriterium} darf kein Suchkriterium \MessageBreak im Serienbriefmodus angegeben werden.\MessageBreak Meistens bringt Weitercompilien das gew nschte Ergebnis} % \end{macrocode} % \subsubsection{English} % \begin{macrocode} \DeclareOption{english} {\originalTeX \selectlanguage{english} \xdef\banknamestr{Bankname} \expandafter\def\csname\banknamestr\endcsname##1 {\def\bankname{##1}} \xdef\banknrstr{Banknumber} \expandafter\def\csname\banknrstr\endcsname##1 {\def\banknr{##1}} \xdef\accountnrstr{Accountnumber} \expandafter\def\csname\accountnrstr\endcsname##1 {\def\accountnr{##1}} \providecommand{\bankconnectionstr}{Bankconnection} \xdef\faxnrstr{Faxnumber} \expandafter\def\csname\faxnrstr\endcsname##1 {\def\myfax{##1}} \xdef\precodestr{Precode} \expandafter\def\csname\precodestr\endcsname##1 {\def\precode{##1}} \xdef\telephonestr{Telephonenumber} \expandafter\def\csname\telephonestr\endcsname##1 {\def\telephonenum{##1}} \providecommand{\emailadrstr}{Email-address} \def\email##1{\def\myemail{##1}} \xdef\fromnamestr{Sendername} \expandafter\def\csname\fromnamestr\endcsname##1 {\def\fromname{##1}} \xdef\fromstreetstr{Senderstreet} \expandafter\def\csname\fromstreetstr\endcsname##1 {\def\fromstreet{##1}} \xdef\fromlocationstr{Senderlocation} \expandafter\def\csname\fromlocationstr\endcsname##1 {\def\fromlocation{##1}} \xdef\fromsigstr{Signature} \expandafter\def\csname\fromsigstr\endcsname##1 {\def\fromsig{##1}} \providecommand{\@datelong}{\dateenglish} \providecommand{\@dateshort}{ \number\day.\number\month.\number\year} \xdef\datestr{Date} \expandafter\def\csname\datestr\endcsname##1 {\def\@date{##1}} \xdef\timestr{Time} \expandafter\def\csname\timestr\endcsname##1 {\def\@time{##1}} \newcommand{\psname}{PS.:} \newcommand{\pagenumstr}{Pages} \newcommand{\yrefstr}{Your sign} \newcommand{\mrefstr}{My sign} \newcommand{\ymaildatestr}{Yout mail from} \newcommand{\subjectstr}{} \newcommand{\subject}[1]{\def\@subject{##1}} \newcommand{\errormesc}{There is a search option at \string\begin{letter}[options] {search options}!} \newcommand{\errorhelpc}{At \string\begin{letter}[options] {search option} isn't a search option allowed\MessageBreak in the multiletter-mode.} % \end{macrocode} % \section{Executing Options} % Here we execute the default options to initialize certain % variables. % \begin{macrocode} \ExecuteOptions{a4paper,12pt,oneside,onecolumn,final} % \end{macrocode} % The |\ProcessOptions| command causes the execution of the code % for every option \Lopt{foo} which is declared and for which the % user typed the \Lopt{foo} option in his |\documentclass| command. % For every option \Lopt{bar} he typed, which is not declared, the % option is assumed to be a global option. All options will be % passed as document options to any |\usepackage| command in the % document preamble. % \begin{macrocode} \ProcessOptions % \end{macrocode} % Now that all the options have been executed we can load the % chosen class option file that contains all size dependant code. % \begin{macrocode} \input{size1\@ptsize.clo} % \end{macrocode} % \section{Document Layout} % \label{sec:maincode} % In this section we are finally dealing with the nasty typographical % details. % \subsection{Fonts} % \LaTeX\ offers the user commands to change the size of the font, % relative to the `main' size. Each relative size changing command % |\size| executes the command % |\@setfontsize||\size|\meta{font-size}\meta{baselineskip} where: % \begin{description} % \item[\meta{font-size}] The absolute size of the font to use from % now on. % \item[\meta{baselineskip}] The normal value of |\baselineskip| % for the size of the font selected. (The actual value will be % |\baselinestretch| * \meta{baselineskip}.) % \end{description} % A number of commands, defined in the \LaTeX{} kernel, shorten the % following definitions and are used throughout. They are: % \begin{center} % \begin{tabular}{ll@{\qquad}ll@{\qquad}ll} % \verb=\@vpt= & 5 & \verb=\@vipt= & 6 & \verb=\@viipt= & 7 \\ % \verb=\@viiipt= & 8 & \verb=\@ixpt= & 9 & \verb=\@xpt= & 10 \\ % \verb=\@xipt= & 10.95 & \verb=\@xiipt= & 12 & \verb=\@xivpt= & 14.4\\ % ... % \end{tabular} % \end{center} % \begin{macro}{\normalsize} % \begin{macro}{\@normalsize} % The user level command for the main size is |\normalsize|. % Internally \LaTeX{} uses |\@normalsize| when it refers to the % main size. |\@normalsize| will be defined to work like % |\normalsize| if the latter is redefined from its default % definition (that just issues an error message). Otherwise % |\@normalsize| simply selects a 10pt/12pt size. % The |\normalsize| macro also sets new values for\\ % |\abovedisplayskip|, |\abovedisplayshortskip| and % |\belowdisplayshortskip|. % \begin{macrocode} %<*10pt|11pt|12pt> \renewcommand{\normalsize}{% %<*10pt> \@setfontsize\normalsize\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ % %<*11pt> \@setfontsize\normalsize\@xipt{13.6}% \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ % %<*12pt> \@setfontsize\normalsize\@xiipt{14.5}% \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ % % \end{macrocode} % The |\belowdisplayskip| is always equal to the % |\abovedisplayskip|. The parameters of the first level list are % always given by |\@listI|. % \begin{macrocode} \belowdisplayskip \abovedisplayskip \let\@listi\@listI} % \end{macrocode} % We initially choose the normalsize font. % \begin{macrocode} \normalsize % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\small} % This is similar to |\normalsize|. % \begin{macrocode} \newcommand{\small}{% %<*10pt> \@setfontsize\small\@ixpt{11}% \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus2\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \def\@listi{\leftmargin\leftmargini \topsep 4\p@ \@plus2\p@ \@minus2\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep}% % %<*11pt> \@setfontsize\small\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ \def\@listi{\leftmargin\leftmargini \topsep 6\p@ \@plus2\p@ \@minus2\p@ \parsep 3\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep}% % %<*12pt> \@setfontsize\small\@xipt{13.6}% \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ \def\@listi{\leftmargin\leftmargini \topsep 9\p@ \@plus3\p@ \@minus5\p@ \parsep 4.5\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep}% % \belowdisplayskip \abovedisplayskip % \end{macrocode} % \end{macro} % \begin{macro}{\footnotesize} % This is similar to |\normalsize|. % \begin{macrocode} \newcommand{\footnotesize}{% %<*10pt> \@setfontsize\footnotesize\@viiipt{9.5}% \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ \def\@listi{\leftmargin\leftmargini \topsep 3\p@ \@plus\p@ \@minus\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep}% % %<*11pt> \@setfontsize\footnotesize\@ixpt{11}% \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \def\@listi{\leftmargin\leftmargini \topsep 4\p@ \@plus2\p@ \@minus2\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep}% % %<*12pt> \@setfontsize\footnotesize\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ \def\@listi{\leftmargin\leftmargini \topsep 6\p@ \@plus2\p@ \@minus2\p@ \parsep 3\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep}% % \belowdisplayskip \abovedisplayskip % % \end{macrocode} % \end{macro} % \begin{macro}{\scriptsize} % \begin{macro}{\tiny} % \begin{macro}{\large} % \begin{macro}{\Large} % \begin{macro}{\LARGE} % \begin{macro}{\huge} % \begin{macro}{\Huge} % These are all much simpler than the previous macros, they just % select a new fontsize, but leave the parameters for displays and % lists alone. % \begin{macrocode} %<*10pt> \newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt} \newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt} \newcommand{\large}{\@setfontsize\large\@xiipt{14}} \newcommand{\Large}{\@setfontsize\Large\@xivpt{18}} \newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}} \newcommand{\huge}{\@setfontsize\huge\@xxpt{25}} \newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}} % %<*11pt> \newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}} \newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt} \newcommand{\large}{\@setfontsize\large\@xiipt{14}} \newcommand{\Large}{\@setfontsize\Large\@xivpt{18}} \newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}} \newcommand{\huge}{\@setfontsize\huge\@xxpt{25}} \newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}} % %<*12pt> \newcommand{\scriptsize}{\@setfontsize\scriptsize\@viiipt{9.5}} \newcommand{\tiny}{\@setfontsize\tiny\@vipt\@viipt} \newcommand{\large}{\@setfontsize\large\@xivpt{18}} \newcommand{\Large}{\@setfontsize\Large\@xviipt{22}} \newcommand{\LARGE}{\@setfontsize\LARGE\@xxpt{25}} \newcommand{\huge}{\@setfontsize\huge\@xxvpt{30}} \let\Huge=\huge % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \subsection{Paragraphing} % \begin{macro}{\lineskip} % \begin{macro}{\normallineskip} % These parameters control \TeX's behavior when two lines tend to % come too close together. % \begin{macrocode} \setlength\lineskip{1\p@} \setlength\normallineskip{1\p@} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\baselinestretch} % This is used as a multiplier for |\baselineskip|. The default is % to {\em not\/} stretch the baselines. % \begin{macrocode} \renewcommand\baselinestretch{} % \end{macrocode} % \end{macro} % \begin{macro}{\parskip} % \begin{macro}{\parindent} % |\parskip| gives extra vertical space between paragraphs and % |\parindent| is the width of the paragraph indentation. % Letters are typeset without paragraph indentation. % \begin{macrocode} \setlength\parskip{0.7em} \setlength\parindent{0\p@} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\@lowpenalty} % \begin{macro}{\@medpenalty} % \begin{macro}{\@highpenalty} % The commands |\nopagebreak| and |\nolinebreak| put in penalties % to discourage these breaks at the point they are put in. % They use |\@lowpenalty|, |\@medpenalty| or |\@highpenalty|, % dependant on their argument. % \begin{macrocode} \@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\clubpenalty} % \begin{macro}{\widowpenalty} % These penalties are used to discourage club and widow lines. % Because we use their default values we only show them here, % commented out. % \begin{macrocode} % \clubpenalty 150 % \widowpenalty 150 % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\displaywidowpenalty} % \begin{macro}{\predisplaypenalty} % \begin{macro}{\postdisplaypenalty} % Discourage (but not so much) widows in front of a math display % and forbid breaking directly in front of a display. Allow break % after a display without a penalty. Again the default values are % used, therefore we only show them here. % \begin{macrocode} % \displaywidowpenalty 50 % \predisplaypenalty 10000 % \postdisplaypenalty 0 % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\interlinepenalty} % Allow the breaking of a page in the middle of a paragraph. % \begin{macrocode} % \interlinepenalty 0 % \end{macrocode} % \end{macro} % \begin{macro}{\brokenpenalty} % We allow the breaking of a page after a hyphenated line. % \begin{macrocode} % \brokenpenalty 0 % % \end{macrocode} % \end{macro} % \subsection{Page Layout} % All margin dimensions are measured from a point one inch from the % top and lefthand side of the page. % \subsubsection{Vertical spacing} % \begin{macro}{\headheight} % \begin{macro}{\headsep} % The |\headheight| is the height of the box that will contain the % running head. The |\headsep| is the distance between the bottom % of the running head and the top of the text. |\topskip| is the % |\baselineskip| for the first line on a page, its value depends % on the size option that was specified. Therefore it is % initialized in one of the \file{size1x.clo} files. % \LaTeX's output routine will not work properly if it has the % value 0pt, so do not do that! % \begin{macrocode} %<*10pt|11pt|12pt> \setlength\headheight{12\p@} \setlength\headsep {45\p@} %<10pt>\setlength\topskip {10\p@} %<11pt>\setlength\topskip {11\p@} %<12pt>\setlength\topskip {12\p@} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\footskip} % The distance from the baseline of the box which contains the % running footer to the baseline of last line of text is controlled % by the |\footskip|. % Bottom of page: % \begin{macrocode} \setlength\footskip{25\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\maxdepth} % \begin{macro}{\@maxdepth} % The \TeX\ primitive register |\maxdepth| has a function that is % similar to that of |\topskip|. The register |\@maxdepth| should % always contain a copy of |\maxdepth|. In both plain \TeX\ and % \LaTeX~2.09 |\maxdepth| had a fixed value of \texttt{4pt}; in % native \LaTeX2e\ mode we let the value depend on the typesize. We % set it so that |\maxdepth| $+$ |\topskip| $=$ typesize $\times % 1.5$. As it happens, in these classes |\topskip| is equal to the % typesize, therefor we set |\maxdepth| to half the value of % |\topskip|. % \begin{macrocode} \setlength\maxdepth{.5\topskip} \setlength\@maxdepth\maxdepth % \end{macrocode} % \end{macro} % \end{macro} % \subsubsection{The dimension of text} % \begin{macro}{\textwidth} % First, we calculate the maximum |\textwidth|, which we will allow % on the selected paper and store it in |\@tempdima|. Then we store % the length of a line with approximately 60--70 characters in % |\@tempdimb|. The values given are more or less suitable when % Computer Modern fonts are used. % \begin{macrocode} \setlength\@tempdima{\paperwidth} \addtolength\@tempdima{-2in} %<10pt> \setlength\@tempdimb{345\p@} %<11pt> \setlength\@tempdimb{360\p@} %<12pt> \setlength\@tempdimb{390\p@} % \end{macrocode} % Now we can set the |\textwidth|, depending on whether we will be % setting one or two columns. % In two column mode each {\em column} shouldn't be wider than % |\@tempdimb| (which could happen on \textsc{a3} paper for % instance). % \begin{macrocode} \if@twocolumn \ifdim\@tempdima>2\@tempdimb\relax \setlength\textwidth{2\@tempdimb} \else \setlength\textwidth{\@tempdima} \fi % \end{macrocode} % In one column mode the text should not be wider than the minimum % of the paperwidth (minus 2 inches for the margins) and the % maximum length of a line as defined by the number of characters. % \begin{macrocode} \else \ifdim\@tempdima>\@tempdimb\relax \setlength\textwidth{\@tempdimb} \else \setlength\textwidth{\@tempdima} \fi \fi % \end{macrocode} % Here we modify the width of the text a little to be a whole % number of points. % \begin{macrocode} \@settopoint\textwidth % \end{macrocode} % \end{macro} % \begin{macro}{\textheight} % Now that we have computed the width of the text, we have to take % care of the height. The |\textheight| is the height of text % (including footnotes and figures, excluding running head and % foot). % Again we compute this, depending on the papersize and depending % on the baselineskip that is used, in order to have a whole number % of lines on the page. % \begin{macrocode} \setlength\@tempdima{\paperheight} % \end{macrocode} % We leave at least a 1 inch margin on the top and the bottom of % the page. % \begin{macrocode} \addtolength\@tempdima{-2in} % \end{macrocode} % We also have to leave room for the running headers and footers. % \begin{macrocode} \addtolength\@tempdima{-1.5in} % \end{macrocode} % Then we divide the result by the current |\baselineskip| and % store this in the count register |\@tempcnta|, which then % contains the number of lines that fit on this page. % \begin{macrocode} \divide\@tempdima\baselineskip \@tempcnta=\@tempdima % \end{macrocode} % From this we can calculate the height of the text. % \begin{macrocode} \setlength\textheight{\@tempcnta\baselineskip} % \end{macrocode} % The first line on the page has a height of |\topskip|. % \begin{macrocode} \addtolength\textheight{\topskip} % \end{macrocode} % \end{macro} % \subsubsection{Margins} % \begin{macro}{\oddsidemargin} % \begin{macro}{\evensidemargin} % \begin{macro}{\marginparwidth} % The values for |\oddsidemargin| and |\marginparwidth| will be set % depending on the status of the |\if@twoside|. % If |@twoside| is true (which is always the case for book) we make % the inner margin smaller than the outer one. % \begin{macrocode} \setlength{\@tempdima}{\paperwidth} \addtolength{\@tempdima}{-2in} \addtolength{\@tempdima}{-\textwidth} \setlength\oddsidemargin {.5\@tempdima} \setlength\evensidemargin {\oddsidemargin} % \end{macrocode} % The width of the margin for text is set to the remainder of the % width except for a `real margin' of white space of width 0.4in. % A check should perhaps be built in to ensure that the (text) % margin width does not get too small! % \begin{macrocode} \setlength\marginparwidth {.6\@tempdima} \addtolength\marginparwidth {-0.4in} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\marginparsep} % \begin{macro}{\marginparpush} % The horizontal space between the main text and marginal notes is % determined by |\marginparsep|, the minimum vertical separation % between two marginal notes is controlled by |\marginparpush|. % \begin{macrocode} %<10pt> \setlength\marginparsep{11\p@} %<11pt> \setlength\marginparsep{10\p@} %<12pt> \setlength\marginparsep{10\p@} %<10pt|11pt>\setlength\marginparpush{5\p@} %<12pt>\setlength\marginparpush{7\p@} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\topmargin} % The |\topmargin| is the distance between the top of `the % printable area' --which is 1 inch below the top of the paper-- % and the top of the box which contains the running head. % It can now be computed from the values set above. % \begin{macrocode} \setlength\topmargin{\paperheight} \addtolength\topmargin{-2in} \addtolength\topmargin{-\headheight} \addtolength\topmargin{-\headsep} \addtolength\topmargin{-\textheight} \addtolength\topmargin{-\footskip} % this might be wrong! % \end{macrocode} % \end{macro} % \subsubsection{Footnotes} % \begin{macro}{\footnotesep} % |\footnotesep| is the height of the strut placed at the beginning % of every footnote. It equals the height of a normal % |\footnotesize| strut in this % class, thus no extra space occurs between footnotes. % \begin{macrocode} %<10pt>\setlength\footnotesep{6.65\p@} %<11pt>\setlength\footnotesep{7.7\p@} %<12pt>\setlength\footnotesep{8.4\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\footins} % |\skip\footins| is the space between the last line of the main % text and the top of the first footnote. % \begin{macrocode} %<10pt>\setlength{\skip\footins}{9\p@ \@plus 4\p@ \@minus 2\p@} %<11pt>\setlength{\skip\footins}{10\p@ \@plus 4\p@ \@minus 2\p@} %<12pt>\setlength{\skip\footins}{10.8\p@ \@plus 4\p@ \@minus 2\p@} % % \end{macrocode} % \end{macro} % \subsubsection{Float placement parameters} % All float parameters are given default values in the \LaTeXe{} % kernel. For this reason counters only need to be set with % |\setcounter| and other parameters are set using |\renewcommand|. % \paragraph{Limits for the placement of floating objects} % \begin{macro}{\c@topnumber} % The \Lcount{topnumber} counter holds the maximum number of % floats that can appear on the top of a text page. % \begin{macrocode} %<*lettGF> \setcounter{topnumber}{2} % \end{macrocode} % \end{macro} % \begin{macro}{\topfraction} % This indicates the maximum part of a text page that can be % occupied by floats at the top. % \begin{macrocode} \renewcommand{\topfraction}{.7} % \end{macrocode} % \end{macro} % \begin{macro}{\c@bottomnumber} % The \Lcount{bottomnumber} counter holds the maximum number of % floats that can appear on the bottom of a text page. % \begin{macrocode} \setcounter{bottomnumber}{1} % \end{macrocode} % \end{macro} % \begin{macro}{\bottomfraction} % This indicates the maximum part of a text page that can be % occupied by floats at the bottom. % \begin{macrocode} \renewcommand{\bottomfraction}{.3} % \end{macrocode} % \end{macro} % \begin{macro}{\c@totalnumber} % This indicates the maximum number of floats that can appear on % any text page. % \begin{macrocode} \setcounter{totalnumber}{3} % \end{macrocode} % \end{macro} % \begin{macro}{\textfraction} % This indicates the minimum part of a text page that has to be % occupied by text. % \begin{macrocode} \renewcommand{\textfraction}{.2} % \end{macrocode} % \end{macro} % \begin{macro}{\floatpagefraction} % This indicates the minimum part of a page that has to be % occupied by floating objects before a `float page' is produced. % \begin{macrocode} \renewcommand{\floatpagefraction}{.5} % \end{macrocode} % \end{macro} % \begin{macro}{\c@dbltopnumber} % The \Lcount{dbltopnumber} counter holds the maximum number of % two column floats that can appear on the top of a two column text % page. % \begin{macrocode} \setcounter{dbltopnumber}{2} % \end{macrocode} % \end{macro} % \begin{macro}{\dbltopfraction} % This indicates the maximum part of a two column text page that % can be occupied by two column floats at the top. % \begin{macrocode} \renewcommand{\dbltopfraction}{.7} % \end{macrocode} % \end{macro} % \begin{macro}{\dblfloatpagefraction} % This indicates the minimum part of a page that has to be % occupied by two column wide floating objects before a `float % page' is produced. % \begin{macrocode} \renewcommand{\dblfloatpagefraction}{.5} % % \end{macrocode} % \end{macro} % \paragraph{Floats on a text page} % \begin{macro}{\floatsep} % \begin{macro}{\textfloatsep} % \begin{macro}{\intextsep} % When a floating object is placed on a page with text, these % parameters control the separation between the float and the other % objects on the page. These parameters are used for both % one-column mode and single-column floats in two-column mode. % |\floatsep| is the space between adjacent floats that are moved % to the top or bottom of the text page. % |\textfloatsep| is the space between the main text and floats % at the top or bottom of the page. % |\intextsep| is the space between in-text floats and the text. % \begin{macrocode} %<*10pt> \setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} \setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} % %<*11pt> \setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} \setlength\intextsep {12\p@ \@plus 2\p@ \@minus 2\p@} % %<*12pt> \setlength\floatsep {12\p@ \@plus 2\p@ \@minus 4\p@} \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} \setlength\intextsep {14\p@ \@plus 4\p@ \@minus 4\p@} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\dblfloatsep} % \begin{macro}{\dbltextfloatsep} % When floating objects that span the whole |\textwidth| are placed % on a text page when we are in twocolumn mode the separation % between the float and the text is controlled by |\dblfloatsep| % and |\dbltextfloatsep|. % |\dblfloatsep| is the space between adjacent floats that are moved % to the top or bottom of the text page. % |\dbltextfloatsep| is the space between the main text and floats % at the top or bottom of the page. % \begin{macrocode} %<*10pt> \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} % %<*11pt> \setlength\dblfloatsep {12\p@ \@plus 2\p@ \@minus 2\p@} \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} % %<*12pt> \setlength\dblfloatsep {14\p@ \@plus 2\p@ \@minus 4\p@} \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@} % % \end{macrocode} % \end{macro} % \end{macro} % \paragraph{Floats on their own page or column} % \begin{macro}{\@fptop} % \begin{macro}{\@fpsep} % \begin{macro}{\@fpbot} % When floating objects are placed on separate pages the layout of % such pages is controlled by these parameters. At the top of the % page |\@fptop| amount of stretchable whitespace is inserted, at % the bottom of the page we get an |\@fpbot| amount of stretchable % whitespace. Between adjacent floats the |\@fpsep| is inserted. % These parameters are used for the placement of floating objects % in one column mode, or in single column floats in two column % mode. % Note that at least one of the two parameters |\@fptop| and % |\@fpbot| should contain a |plus ...fil| to allow filling the % remaining empty space. % \begin{macrocode} %<*10pt> \setlength\@fptop{0\p@ \@plus 1fil} \setlength\@fpsep{8\p@ \@plus 2fil} \setlength\@fpbot{0\p@ \@plus 1fil} % %<*11pt> \setlength\@fptop{0\p@ \@plus 1fil} \setlength\@fpsep{8\p@ \@plus 2fil} \setlength\@fpbot{0\p@ \@plus 1fil} % %<*12pt> \setlength\@fptop{0\p@ \@plus 1fil} \setlength\@fpsep{10\p@ \@plus 2fil} \setlength\@fpbot{0\p@ \@plus 1fil} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\@dblfptop} % \begin{macro}{\@dblfpsep} % \begin{macro}{\@dblfpbot} % Double column floats in two column mode are handled with similar % parameters. % \begin{macrocode} %<*10pt> \setlength\@dblfptop{0\p@ \@plus 1fil} \setlength\@dblfpsep{8\p@ \@plus 2fil} \setlength\@dblfpbot{0\p@ \@plus 1fil} % %<*11pt> \setlength\@dblfptop{0\p@ \@plus 1fil} \setlength\@dblfpsep{8\p@ \@plus 2fil} \setlength\@dblfpbot{0\p@ \@plus 1fil} % %<*12pt> \setlength\@dblfptop{0\p@ \@plus 1fil} \setlength\@dblfpsep{10\p@ \@plus 2fil} \setlength\@dblfpbot{0\p@ \@plus 1fil} % %<*lettGF> % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsection{Page Styles} % The page style \pstyle{foo} is defined by defining the command % |\ps@foo|. This command should make only local definitions. % There should be no stray spaces in the definition, since they % could lead to mysterious extra spaces in the output (well, that's % something that should be always avoided). % \begin{macro}{\@evenhead} % \begin{macro}{\@oddhead} % \begin{macro}{\@evenfoot} % \begin{macro}{\@oddfoot} % The |\ps@...| command defines the macros |\@oddhead|, % |\@oddfoot|, |\@evenhead|, and |\@evenfoot| to define the running % heads and feet---e.g., |\@oddhead| is the macro to produce the % contents of the heading box for odd-numbered pages. It is called % inside an |\hbox| of width |\textwidth|. % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Marking conventions} % To make headings determined by the sectioning commands, the page % style defines the commands |\chaptermark|, |\sectionmark|, % \ldots, where |\chaptermark{|\meta{text}|}| is called by % |\chapter| to set a mark, and so on. % The |\...mark| commands and the |\...head| macros are defined % with the help of the following macros. (All the |\...mark| % commands should be initialized to no-ops.) % \LaTeX{} extends \TeX's |\mark| facility by producing two kinds % of marks, a `left' and a `right' mark, using the following % commands: % \begin{flushleft} % |\markboth{|\meta{left}|}{|\meta{right}|}|: Adds both marks. % |\markright{|\meta{right}|}|: Adds a `right' mark. % |\leftmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| % or |\@evenfoot| macros, it gets the current `left' % mark. |\leftmark| works like \TeX's |\botmark| % command. % |\rightmark|: Used in the |\@oddhead|, |\@oddfoot|, |\@evenhead| % or |\@evenfoot| macros, it gets the current % `right' mark. |\rightmark| works like \TeX's % |\firstmark| command. % \end{flushleft} % The marking commands work reasonably well for right marks % `numbered within' left marks--e.g., the left mark is changed by a % |\chapter| command and the right mark is changed by a |\section| % command. However, it does produce somewhat anomalous results if % two |\markboth|'s occur on the same page. % Commands like |\tableofcontents| that should set the marks in some % page styles use a |\@mkboth| command, which is |\let| by the % pagestyle command (|\ps@...|) to |\markboth| for setting the % heading or to |\@gobbletwo| to do nothing. % \begin{macrocode} % %%%\mark{{}{}} % Initializes TeX's marks <--- can vanish % \end{macrocode} % \subsubsection{Defining the page styles} % \label{sec:pagestyle} % The pagestyles \pstyle{empty} and \pstyle{plain} are defined in % \file{latex.tex}. % \begin{macro}{\ps@headings} % The definition of the page style \pstyle{headings} has to be % different for two sided printing than it is for one sided % printing. % \begin{macrocode} \ifthenelse{\boolean{@twoside}} {\def\ps@headings{% % \end{macrocode} % The running feet are empty in this page style. % \begin{macrocode} \let\@oddfoot\@empty \let\@evenfoot\@empty % \end{macrocode} % The running head contains some information about this letter. The % head is the same for even and odd pages. % \begin{macrocode} \ifthenelse{\setboolean{noheader}} {\let\@oddhead\@empty} {\setlength\headheight{36\p@} \def\@oddhead{\@setheader}} \let\@evenhead\@oddhead}} % \end{macrocode} % For one sided printing we don't need to define |\@evenhead| so % the definition is somewhat simpler. % \begin{macrocode} {\def\ps@headings{% \let\@oddfoot\@empty \ifthenelse{\setboolean{noheader}} {\let\@oddhead\@empty} {\setlength\headheight{36\p@} \def\@oddhead{\@setheader}}}} % \end{macrocode} % \end{macro} % \begin{macro}{\ps@empty} % The definition of the page style \pstyle{empty} is simple: % No running head or foot at all. % \begin{macrocode} \def\ps@empty{% \let\@oddfoot\@empty \let\@oddhead\@empty \let\@evenfoot\@empty \let\@evenhead\@empty} % \end{macrocode} % \end{macro} % \begin{macro}{\ps@firstpage} % The page style \pstyle{firstpage} puts the telephone number % in the proper place for the letterhead. It should be adapted % to site conventions. The size of the number is determined % depending on the main size. % \begin{macrocode} \def\ps@firstpage{% \ifnoheader \let\@oddhead\@empty \else \setlength\headheight{36\p@} \def\@evenhead{\@setheader} \fi \def\@oddfoot{\raisebox{0\p@}[\z@]{\@setfooter} \hss}} % \end{macrocode} % \end{macro} % \begin{macro}{\ps@plain} % The definition of the page style \pstyle{plain} is again simple. % \begin{macrocode} \def\ps@plain{% \ifnoheader \let\@oddhead\@empty \else \setlength\headheight{36\p@} \def\@oddhead{\@setheader} \fi \def\@oddfoot{ \rmfamily \hfil \thepage \ifthenelse{\boolean{faxpaper}} {/\pagenum} {} \hfil}% \let\@evenfoot\@oddfoot}% % \end{macrocode} % \end{macro} % \subsection{documentbegin/end with faxoption} % At the end of the document write out the total number of % page in the auxfile. % \begin{macrocode} \ifthenelse{\boolean{faxpaper}} {\@fileswtrue \AtEndDocument{ \addtocounter{page}{-1} \immediate\write\@mainaux{\string\def\string\pagenum{\thepage}} \addtocounter{page}{1} }} {\@fileswfalse} % \end{macrocode} % \section{Document Markup} % \subsection{Global Declarations} % \begin{macro}{\leftfield} % Width of the left part of the headline. % \begin{macrocode} \setlength\unitlength{\p@} \newlength{\leftfield} \setlength\leftfield{0.6\textwidth} % \end{macrocode} % \end{macro} % \begin{macro}{\rightfield} % Width of the right part of the headline. % \begin{macrocode} \newlength{\rightfield} \setlength\rightfield{\textwidth} \addtolength{\rightfield}{-\leftfield} % \end{macrocode} % \end{macro} % \begin{macro}{\@date} % This macro uses the \TeX\ primitives |\month|, |\day| and |\year| % to provide the date of the \LaTeX-run. % \begin{macrocode} \providecommand{\@date} {\newboolean{@datelongboo} \setboolean{@datelongboo}{false} \ifthenelse{\equal{\@yref}{}} {\ifthenelse{\equal{\@myref}{}} {\setboolean{@datelongboo}{true}}{} }{} \ifthenelse{\equal{\@ymail}{}} {\ifthenelse{\boolean{fax}} {\ifthenelse{\equal{\@myref}{}} {\setboolean{@datelongboo}{true}}{} \ifthenelse{\equal{\@yref}{}} {\setboolean{@datelongboo}{true}}{} } {\setboolean{@datelongboo}{true}}{} } {\ifthenelse{\boolean{fax}} {} {\ifthenelse{\equal{\@myref}{}} {\setboolean{@datelongboo}{true}}{} \ifthenelse{\equal{\@yref}{}} {\setboolean{@datelongboo}{true}}{} } } \ifthenelse{\boolean{@datelongboo}} {\@datelong} {\@dateshort} } % \end{macrocode} % \end{macro} % \begin{macro}{\@date} % Macro to to caculate the actual time, but not to print it. % \begin{macrocode} \newcommand{\@calculate@time}{ % \end{macrocode} % expands to the actual time (hours:minutes) % written by Dimitris Dranidis % (modified by Michael Mehlich to avoid temporary counter) % \begin{macrocode} \newcount\hours \newcount\minutes % \end{macrocode} % calculate hours and minutes\\ % hours = time/60 = ((time/60)*60)/60\\ % minutes = time-(time/60)*60\\ % \begin{macrocode} \minutes\time \hours\minutes\divide\hours60\multiply\hours60 \advance\minutes-\hours \divide\hours60 % \end{macrocode} % \end{macro} % \begin{macro}{\@date} % macro to output calculated time % \begin{macrocode} \def\@time{\@calculate@time \the\hours:% \ifnum\minutes<10 0% \else \fi \the\minutes} % \end{macrocode} % \end{macro} % \begin{macro}{\pagenum} % \begin{macro}{\@yref} % \begin{macro}{\@mref} % \begin{macro}{\@ymaildate} % \begin{macro}{\@subject} % We make sure that the internal control sequences that are used to % store the information exist and are empty. % \begin{macrocode} \def\pagenum{??} \def\@yref{} \def\@mref{} \def\@ymaildate{} \def\@subject{} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@setheader} % Command to print the header, that exist out of two parts. % \begin{macrocode} \newcommand{\@setheader} {\parbox[t]{\textwidth}% % \end{macrocode} % Set the left part. % \begin{macrocode} {\parbox[b]{\leftfield} {\ifcase\@ptsize\relax \LARGE \or \Large \or \large \fi \sffamily\fromname}% % \end{macrocode} % Set the right part with the picture or anythingelse. % \begin{macrocode} \parbox[b]{\rightfield} {\hfill \ifx\bilddateiname\empty \else \input{\bilddateiname}% \csname set\bilddateiname\endcsname% \fi}\\[1mm]% \rule{\textwidth}{0.1mm} }% % \end{macrocode} % \end{macro} % \begin{macro}{\@setfooter} % Command to print the footer, which contents the bankconnection % or/and the full adress. % \begin{macrocode} \newcommand{\@setfooter} {\parbox[b]{\textwidth} {\ifcase\@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \tabcolsep0.5ex % \end{macrocode} % Print the full address. % \begin{macrocode} \ifthenelse{\boolean{fulladdress}} {\sffamily\rule{\textwidth}{1pt} \begin{tabular}{l} \fromname\\ \fromstreet\\ \fromlocation \end{tabular} \hfill \begin{tabular}{ll} \telephonestr:&\precode/\telephonenum\\ \faxnrstr: &\precode/\myfax\\ \emailadrstr: &\myemail \end{tabular} % \end{macrocode} % Print the bankconnection. % \begin{macrocode} \ifthenelse{\boolean{bankconnection}} {\hfill \begin{tabular}{ll} \banknamestr: &\bankname\\ \banknrstr: &\banknr\\ \accountnrstr: &\accountnr \end{tabular} }{} } {\ifthenelse{\boolean{bankconnection}} {\sffamily\rule{\textwidth}{1pt} \underline{\bankconnectionstr:} \bankname \hfill \banknrstr: \banknr \hfill \accountnrstr: \accountnr }{} } } % \end{macrocode} % \end{macro} % \subsection{The generic letter commands} % \begin{environment}{letter} % The letter environment creates a new letter, starting from page 1. % (The first page is unnumbered.) It has a single argument, which % is the addressee and his address, as in %\begin{verbatim} % \begin{letter}{Sam Jones \\ % Institute for Retarded Study\\ % Princeton, N.J.} %\end{verbatim} % Local declarations, such as |\address|, can follow the % |\begin{letter}|. % \begin{macrocode} \newenvironment{letter}[2][empty] {\pagestyle{plain} \newpage \ifthenelse{\boolean{@twoside}} {\ifthenelse{\isodd{\c@page}} {} {\thispagestyle{plain} \hbox{}\newpage} }{} \c@page\@ne \interlinepenalty=200 % smaller than the TeXbook value \ifthenelse{\boolean{mletterboo}} {\ifthenelse{\equal{#1}{empty}} {} {\ClassError{\ClassName}{\errormesc}{\errorhelpc}} \ifthenelse{\equal{#2}{\empty}} {} {\ClassError{\ClassName}{\errormesc}{\errorhelpc}}} {\searchaddress[#1]{#2}} % \end{macrocode} % The |\leavevmode| and |\ignorespaces| commands are there for % protecting against an empty argument. % \begin{macrocode} \@processto{\leavevmode\ignorespaces \csname\adr\endcsname}} % \end{macrocode} % The end of the environment possibly writes the address % information on the \file{.aux} file. % \begin{macrocode} {\stopletter\@@par \ifthenelse{\value{psnum}=1}{\psname\space\@ps\\}{} \pagebreak\@@par} % \end{macrocode} % \end{environment} % \begin{macro}{\@processto} % \begin{macro}{\@xproc} % \begin{macro}{\@yproc} % |\@processto| gets the |\toname| and |\toaddress| from the letter % environment's macro argument. |\@xproc| and |\@yproc| are auxiliary % macros. % \begin{macrocode} \long\def\@processto#1{\@xproc #1\\@@@\ifx\toaddress\@empty \else \@yproc #1@@@\fi} \long\def\@xproc #1\\#2@@@{\def\toname{#1}\def\toaddress{#2}} \long\def\@yproc #1\\#2@@@{\def\toaddress{#2}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Page breaking control} % \begin{macro}{\stopbreaks} % When the command |\stopbreaks| is issued no page breaks should % occur until |\startbreaks| is called. % \begin{macrocode} \newcommand*{\stopbreaks}{\interlinepenalty \@M \def\par{\@@par\nobreak}\let\\=\@nobreakcr \let\vspace\@nobreakvspace} % \end{macrocode} % \end{macro} % \begin{macro}{\nobreakvspace} % \begin{macro}{\nobreakvspacex} % \begin{macro}{\nobreakcr} % These are needed by |\stopbreaks| % \begin{macrocode} \def\@nobreakvspace{\@ifstar{\@nobreakvspacex}{\@nobreakvspacex}} \def\@nobreakvspacex#1{\ifvmode\nobreak\vskip #1\relax\else \@bsphack\vadjust{\nobreak\vskip #1}\@esphack\fi} \def\@nobreakcr{\vadjust{\penalty\@M}\@ifstar{\@xnewline}{\@xnewline}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\startbreaks} % This cancels the effect of |\stopbreaks|. % \begin{macrocode} \newcommand*{\startbreaks}{\let\\=\@normalcr \interlinepenalty 200\def\par{\@@par\penalty 200\relax}} % \end{macrocode} % \end{macro} % \begin{macro}{\to@label} % Because the german post can deliver the letters faster, if the % addresslabel written in sanserif 10pt-12pt, because of maschinell % reading. % \begin{macrocode} \newcommand{\to@label}[2] {\setbox0\vbox {\parbox{\leftfield} {\ifcase\@ptsize\relax \LARGE \or \Large \or \large \fi \sf#1\\#2}} \vbox to 3.5cm{\vss\box0\vss}} % \end{macrocode} % \end{macro} % \begin{macro}{\longindentation} % The size of the indent to use before the closing of the letter. % \begin{macrocode} \newdimen\longindentation \longindentation=.5\textwidth % \end{macrocode} % \end{macro} % \begin{macro}{\indentedwidth} % The width of the closing of the letter. % \begin{macrocode} \newdimen\indentedwidth \indentedwidth=\textwidth \advance\indentedwidth -\longindentation % \end{macrocode} % \end{macro} % \begin{macro}{\opening} % Text is begun with the |\opening| command, whose argument % generates the salutation, as in %\begin{verbatim} % \opening{Dear Henry,} %\end{verbatim} % This should produce everything up to and including the `Dear Henry,' % and a \par command that follows. Since there's a |\vfil| at the % bottom of every page, it can add vertical fill to position a short % letter. It should use the following commands: % \begin{itemize} % \item |\toname| : name part of `to' address. % Will be one line long. % \item |\toaddress| : address part of `to' address. % The lines separated by |\\|. % \item |\fromname| : name of sender. % \item |\fromaddress| : argument of current |\address| % declaration-- null if none. Should use standard institutional % address if null. % \item |\fromlocation| : argument of current |\location| % declaration--null if none. % \item |\telephonenum| : argument of current |\telephone| % declaration--null if none. % \end{itemize} % \begin{macrocode} \newcommand{\opening}[2][empty]{ \thispagestyle{firstpage} \parbox[t]{\leftfield} {\ifcase \@ptsize\relax \normalsize \or \small \or \footnotesize \fi \underline{\sf \fromaddress}\\ \to@label{\toname}{\toaddress} } \parbox[t]{\rightfield}{} \par \rule{\textwidth}{0.1mm} \tabcolsep0em \begin{tabular}{l} \ifcase \@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \datestr\\ \normalsize \@date \end{tabular} \ifthenelse{\boolean{faxpaper}} {\hfill \begin{tabular}{c} \ifcase \@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \timestr\\ \normalsize \@time \end{tabular} \hfill \begin{tabular}{c} \ifcase \@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \pagenumstr\\ \normalsize \pagenum \end{tabular} } \hfill \ifthenelse{\equal{\@myref}{\empty}} {} {\begin{tabular}{c} \ifcase\@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \myrefname\\ \normalsize \@myref \end{tabular}\hfill } \ifthenelse{\equal{\@yref}{\empty}} {} {\begin{tabular}{c} \ifcase\@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \yrefstr\\ \normalsize\@yref% \end{tabular} \hfill } \ifthenelse{\equal{\@ymaildate}{\empty}} {} {\begin{tabular}{r} \ifcase\@ptsize\relax \small \or \footnotesize \or \scriptsize \fi \ymaildatestr\\ \normalsize\@ymaildate% \end{tabular} \hfill } \par \tabcolsep1em \vspace{3\parskip} \ifthenelse{\equal{\@subject}{\empty}} {} {\ifthenelse{\equal{\subjectstr}{\empty}} {{\bf \@subject}} {{\bf\subjectstr}\space\@subject} \par \vspace{2\parskip} } \ifthenelse{\equal{#1}{empty}} {\ifthenelse{\equal{#2}{\empty}} {\openingtext} {#2}} {\csname #1\endcsname \ifthenelse{\equal{#2}{\empty}} {} {\space #2},} \par\nobreak % \end{macrocode} % \end{macro} % \begin{macro}{\closing} % The body of the letter follows, ended by a |\closing| command, % as in %\begin{verbatim} % \closing{Yours truly,} %\end{verbatim} % This command generates the closing matter, and the signature. % An obvious thing to do is to use a |\parbox| for the closing % and the signature. Should use the following: % \begin{itemize} % \item |\fromsig| : argument of current |\signature| declaration % or, if null, the |\fromname|. % \item |\stopbreaks| : a macro that inhibits page breaking. % \end{itemize} % \begin{macrocode} \newcommand{\closing}[1]{ \par\nobreak\vspace{\parskip}% \stopbreaks% \noindent% \hspace*{\longindentation}% \parbox{\indentedwidth} {\raggedright \ifthenelse{\equal{#1}{\empty}} {\closingtext} {\@ifundefined{#1}% {#1} {\csname #1\endcsname} }\\ \ifthenelse{\equal{\csname\contactstr\endcsname}{\contactgood}}% {Dein% \ifthenelse{\boolean{faxpaper}}% {\ifthenelse{\equal{\unterschriftdateiname}{\empty}}% {\vspace{6\medskipamount}}% {\par% \vspace{3\medskipamount}% \hspace{1em}% \input{\unterschriftdateiname}% \csname set\unterschriftdateiname\endcsname% \par}} {\vspace{6\medskipamount}} } {\ifthenelse{\boolean{faxpaper}}% {\ifthenelse{\equal{\unterschriftdateiname}{\empty}}% {\vspace{6\medskipamount}}% {\par% \vspace{3 \medskipamount}% \hspace{1em}% \input{\unterschriftdateiname}% \csname set\unterschriftdateiname\endcsname% \par}} {\vspace{6\medskipamount}}% \vspace{1\medskipamount}% \ifthenelse{\equal{\fromsig}{\empty}}% {} {(\fromsig)} }% \strut }% \vfill} % \end{macrocode} % \end{macro} % \begin{macro}{\smallskipamount} % \begin{macro}{\mdeskipamount} % \begin{macro}{\bigskipamount} % Of these three, only |\medskipmount| is actually used above. % \begin{macrocode} %\smallskipamount=.5\parskip \medskipamount=\parskip %\bigskipamount=2\parskip % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\cc} % \begin{macro}{\encl} % \begin{macro}{\ps} % After the |\closing| you can put arbitrary stuff, which is typeset % with zero |\parindent| and no page breaking. Commands designed % for use after the closing are: % \begin{verbatim} % \cc{Tinker\\Evers\\Chance} %\end{verbatim} % which produces:\\ % \begin{tabular}{ll} % cc: & Tinker\\ % & Evers\\ % & Chance % \end{tabular}\\ % Note the obvious use of |\parbox|. % \begin{macrocode} \newlength{\word} \newcommand*{\cc}[1]{% \par\noindent \parbox[t]{\textwidth}{% \@hangfrom{\reset@font\rm \ccname: }% \ignorespaces #1\strut}\par} % \end{macrocode} %\begin{verbatim} % \encl{Foo(2)\\Bar} %\end{verbatim} % which produces:\\ % \begin{tabular}{ll} % encl: & Foo(2)\\ % & Bar % \end{tabular} % \begin{macrocode} \newcommand*{\encl}[1]{% \par\noindent \parbox[t]{\textwidth}{% \@hangfrom{\reset@font\rm \enclname: }% \ignorespaces #1\strut}\par} % \end{macrocode} %\begin{verbatim} % \ps{Bar} %\end{verbatim} % which produces:\\ % PS.: Bar %\begin{verbatim} % \ps{Foo(2) % \ps{Bar} %\end{verbatim} % \begin{tabular}{ll} % encl: & 1) Foo(2)\\ % & 2) Bar % \end{tabular} % \begin{macrocode} \newcounter{psnum} \newcommand*{\ps}[1] {\stepcounter{psnum} \ifthenelse{\value{psnum}=1} {\def\@ps{#1}} {\ifthenelse{\value{psnum}=2} {\psname\space1.\ \@ps\\} {} \settowidth{\word}{\psname\space} \hspace*{\word}\the\value{psnum}.\ #1\\}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\stopletter} % The |\stopletter| command is called by |\endletter| to do the % following: % Add any desired fill or other material at the end of the % letter. % \begin{macrocode} \newcommand*{\stopletter}{} % \end{macrocode} % \end{macro} % \begin{macro}{\fromaddress} % The return address for the labels can be stored in this % macro. % \begin{macrocode} \newcommand*{\fromaddress} {\fromname\space \fromstreet\space \fromlocation} % \end{macrocode} % \end{macro} % \subsection{Lists} % \subsubsection{General List Parameters} % The following commands are used to set the default values for the list % environment's parameters. See the \LaTeX{} manual for an explanation % of the meanings of the parameters. Defaults for the list % environment are set as follows. First, |\rightmargin|, % |\listparindent| and |\itemindent| are set to 0pt. Then, for a Kth % level list, the command |\@listK| is called, where `K' denotes `i', % `i', ... , `vi'. (I.e., |\@listiii| is called for a third-level % list.) By convention, |\@listK| should set |\leftmargin| to % |\leftmarginK|. % \begin{macro}{\leftmargin} % \begin{macro}{\leftmargini} % \begin{macro}{\leftmarginii} % \begin{macro}{\leftmarginiii} % \begin{macro}{\leftmarginiv} % \begin{macro}{\leftmarginv} % \begin{macro}{\leftmarginvi} % For efficiency, level-one list's values are defined at top level, and % |\@listi| is defined to set only |\leftmargin|. % \begin{macrocode} \setlength\leftmargini {2.5em} % \end{macrocode} % The following three are calculated so that they are larger than % the sum of |\labelsep| and the width of the default labels (which % are `(m)', `vii.' and `M.'). % \begin{macrocode} \setlength\leftmarginii {2.2em} \setlength\leftmarginiii {1.87em} \setlength\leftmarginiv {1.7em} \setlength\leftmarginv {1em} \setlength\leftmarginvi {1em} % \end{macrocode} % Here we set the top level leftmargin. % \begin{macrocode} \setlength\leftmargin {\leftmargini} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\labelsep} % \begin{macro}{\labelwidth} % |\labelsep| is the distance between the label and the text of an % item; |\labelwidth| is the width of the label. % \begin{macrocode} \setlength \labelsep {5\p@} \setlength \labelwidth{\leftmargini} \addtolength\labelwidth{-\labelsep} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\partopsep} % When the user leaves a blank line before the environment an extra % vertical space of |\partopsep| is inserted, in addition to % |\parskip| and |\topsep|. % \begin{macrocode} %<10pt>\setlength\partopsep{2\p@ \@plus 1\p@ \@minus 1\p@} %<11pt>\setlength\partopsep{3\p@ \@plus 1\p@ \@minus 1\p@} %<12pt>\setlength\partopsep{3\p@ \@plus 2\p@ \@minus 2\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\@beginparpenalty} % \begin{macro}{\@endparpenalty} % These penalties are inserted before and after a list or paragraph % environment. They are set to a bonus value to encourage page % breaking at these points. % \begin{macro}{\@itempenalty} % This penalty is inserted between list items. % \begin{macrocode} \@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty -\@lowpenalty % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\@listI} % \begin{macro}{\@listi} % |\@listI| defines top level and |\@listi| values of % |\leftmargin|, |\parsep|, |\topsep|, and |\itemsep| % \begin{macrocode} %<*10pt|11pt|12pt> \def\@listI{\leftmargin\leftmargini %<*10pt> \parsep 4\p@ \@plus2\p@ \@minus\p@ \topsep 8\p@ \@plus2\p@ \@minus4\p@ \itemsep4\p@ \@plus2\p@ \@minus\p@} % %<*11pt> \parsep 4.5\p@ \@plus2\p@ \@minus\p@ \topsep 9\p@ \@plus3\p@ \@minus5\p@ \itemsep4.5\p@ \@plus2\p@ \@minus\p@} % %<*12pt> \parsep 5\p@ \@plus2.5\p@ \@minus\p@ \topsep 10\p@ \@plus4\p@ \@minus6\p@ \itemsep5\p@ \@plus2.5\p@ \@minus\p@} % \let\@listi\@listI % \end{macrocode} % We have to initialize these parameters. % \begin{macrocode} \@listi % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\@listii} % \begin{macro}{\@listiii} % \begin{macro}{\@listiv} % \begin{macro}{\@listv} % \begin{macro}{\@listvi} % Here are the same macros for the higher level lists. % \begin{macrocode} \def\@listii {\leftmargin\leftmarginii \labelwidth\leftmarginii \advance\labelwidth-\labelsep %<*10pt> \topsep 4\p@ \@plus2\p@ \@minus\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ % %<*11pt> \topsep 4.5\p@ \@plus2\p@ \@minus\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ % %<*12pt> \topsep 5\p@ \@plus2.5\p@ \@minus\p@ \parsep 2.5\p@ \@plus\p@ \@minus\p@ % \itemsep \parsep} \def\@listiii{\leftmargin\leftmarginiii \labelwidth\leftmarginiii \advance\labelwidth-\labelsep %<10pt> \topsep 2\p@ \@plus\p@\@minus\p@ %<11pt> \topsep 2\p@ \@plus\p@\@minus\p@ %<12pt> \topsep 2.5\p@\@plus\p@\@minus\p@ \parsep \z@ \partopsep \p@ \@plus\z@ \@minus\p@ \itemsep \topsep} \def\@listiv {\leftmargin\leftmarginiv \labelwidth\leftmarginiv \advance\labelwidth-\labelsep} \def\@listv {\leftmargin\leftmarginv \labelwidth\leftmarginv \advance\labelwidth-\labelsep} \def\@listvi {\leftmargin\leftmarginvi \labelwidth\leftmarginvi \advance\labelwidth-\labelsep} % % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Enumerate} % The enumerate environment uses four counters: \Lcount{enumi}, % \Lcount{enumii}, \Lcount{enumiii} and \Lcount{enumiv}, where % \Lcount{enumN} controls the numbering of the Nth level % enumeration. % \begin{macro}{\theenumi} % \begin{macro}{\theenumii} % \begin{macro}{\theenumiii} % \begin{macro}{\theenumiv} % The counters are already defined in \file{latex.tex}, but their % representation is changed here. % \begin{macrocode} \renewcommand\theenumi{\arabic{enumi}} \renewcommand\theenumii{\alph{enumii}} \renewcommand\theenumiii{\roman{enumiii}} \renewcommand\theenumiv{\Alph{enumiv}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\labelenumi} % \begin{macro}{\labelenumii} % \begin{macro}{\labelenumiii} % \begin{macro}{\labelenumiv} % The commands |\labelenumi| ... |\labelenumiv| generate the label % for each item. % \begin{macrocode} \newcommand\labelenumi{\theenumi.} \newcommand\labelenumii{(\theenumii)} \newcommand\labelenumiii{\theenumiii.} \newcommand\labelenumiv{\theenumiv.} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\p@enumii} % \begin{macro}{\p@enumiii} % \begin{macro}{\p@enumiv} % The expansion of |\p@enumN||\theenumN| defines the output of a % |\ref| command when referencing an item of the Nth level of an % enumerated list. % \begin{macrocode} \renewcommand\p@enumii{\theenumi} \renewcommand\p@enumiii{\theenumi(\theenumii)} \renewcommand\p@enumiv{\p@enumiii\theenumiii} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Itemize} % \begin{macro}{\labelitemi} % \begin{macro}{\labelitemii} % \begin{macro}{\labelitemiii} % \begin{macro}{\labelitemiv} % Itemization is controlled by |\labelitemi|, % |\labelitemii|, |\labelitemiii|, and |\labelitemiv|, which define % the labels of the various itemization levels: the symbols used are % bullet, bold en-dash, asterisk and centered dot. % \begin{macrocode} \newcommand\labelitemi{$\m@th\bullet$} \newcommand\labelitemii{\normalfont\bfseries --} \newcommand\labelitemiii{$\m@th\ast$} \newcommand\labelitemiv{$\m@th\cdot$} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \subsubsection{Description} % \begin{environment}{description} % The description environment is defined here -- while the itemize % and enumerate environments are defined in \file{latex.tex}. % \begin{macrocode} \newenvironment{description} {\list{}{\labelwidth\z@ \itemindent-\leftmargin \let\makelabel\descriptionlabel}} {\endlist} % \end{macrocode} % \end{environment} % \begin{macro}{\descriptionlabel} % To change the formatting of the label, you must redefine % |\descriptionlabel|. % \begin{macrocode} \newcommand\descriptionlabel[1]{\hspace\labelsep \normalfont\bfseries #1} % \end{macrocode} % \end{macro} % \subsection{Defining new environments} % \subsubsection{Verse} % \begin{environment}{verse} % The verse environment is defined by making clever use of the % list environment's parameters. The user types |\\| to end a line. % This is implemented by |\let|'ing |\\| equal |\@centercr|. % \begin{macrocode} \newenvironment{verse} {\let\\=\@centercr \list{}{\setlength\itemsep{\z@}% \setlength\itemindent{-15\p@}% \setlength\listparindent{\itemindent}% \setlength\rightmargin{\leftmargin}% \addtolength\leftmargin{15\p@}}% \item[]} {\endlist} % \end{macrocode} % \end{environment} % \subsubsection{Quotation} % \begin{environment}{quotation} % The quotation environment is also defined by making clever use of % the list environment's parameters. The lines in the environment % are set smaller than |\textwidth|. The first line of a paragraph % inside this environment is indented. % \begin{macrocode} \newenvironment{quotation} {\list{}{\setlength\listparindent{1.5em}% \setlength\itemindent{\listparindent}% \setlength\rightmargin{\leftmargin}}% \item[]} {\endlist} % \end{macrocode} % \end{environment} % \subsubsection{Quote} % \begin{environment}{quote} % The quote environment is like the quotation environment except % that paragraphs are not indented. % \begin{macrocode} \newenvironment{quote} {\list{}{\setlength\rightmargin{\leftmargin}}% \item[]} {\endlist} % \end{macrocode} % \end{environment} % \subsubsection{Theorem} % This document class does not define it's own theorem environments, % the defaults, supplied by \file{latex.ltx} are available. % \subsection{Setting parameters for existing environments} % \subsubsection{Array and tabular} % \begin{macro}{\arraycolsep} % The columns in an array environment are separated by % 2|\arraycolsep|. % \begin{macrocode} \setlength\arraycolsep{5\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\tabcolsep} % The columns in an tabular environment are separated by % 2|\tabcolsep|. % \begin{macrocode} \setlength\tabcolsep{6\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\arrayrulewidth} % The width of vertical rules in the array and tabular environments % is given by |\arrayrulewidth|. % \begin{macrocode} \setlength\arrayrulewidth{.4\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\doublerulesep} % The space between adjacent rules in the array and tabular % environments is given by |\doublerulesep|. % \begin{macrocode} \setlength\doublerulesep{2\p@} % \end{macrocode} % \end{macro} % \subsubsection{Tabbing} % \begin{macro}{\tabbingsep} % This controls the space that the |\'| command puts in. (See % \LaTeX{} manual for an explanation.) % \begin{macrocode} \setlength\tabbingsep{\labelsep} % \end{macrocode} % \end{macro} % \subsubsection{Minipage} % \begin{macro}{\@minipagerestore} % The macro |\@minipagerestore| is called upon entry to a minipage % environment to set up things that are to be handled differently % inside a minipage environment. In the current styles, it does % nothing. % \end{macro} % \begin{macro}{\@mpfootins} % Minipages have their own footnotes; |\skip||\@mpfootins| plays % same r\^ole for footnotes in a minipage as |\skip||\footins| does % for ordinary footnotes. % \begin{macrocode} \skip\@mpfootins = \skip\footins % \end{macrocode} % \end{macro} % \subsubsection{Framed boxes} % \begin{macro}{\fboxsep} % The space left by |\fbox| and |\framebox| between the box and the % text in it. % \begin{macro}{\fboxrule} % The width of the rules in the box made by |\fbox| and |\framebox|. % \begin{macrocode} \setlength\fboxsep{3\p@} \setlength\fboxrule{.4\p@} % \end{macrocode} % \end{macro} % \end{macro} % \subsubsection{Equation and eqnarray} % \begin{macro}{\theequation} % The equation counter will be typeset using arabic numbers. % \begin{macrocode} \renewcommand\theequation{\arabic{equation}} % \end{macrocode} % \end{macro} % \begin{macro}{\jot} % |\jot| is the extra space added between lines of an eqnarray % environment. The default value is used. % \begin{macrocode} % \setlength\jot{3pt} % \end{macrocode} % \end{macro} % \begin{macro}{\@eqnnum} % The macro |\@eqnnum| defines how equation numbers are to appear in % equations. Again the default is used. % \begin{macrocode} % \def\@eqnnum{(\theequation)} % \end{macrocode} % \end{macro} % \subsection{Font changing} % Here we supply the declarative font changing commands that were % common in \LaTeX\ version 2.09 and earlier. These commands work % in text mode \emph{and} in math mode. They are provided for % compatibility, but one should start using the |\text...| and % |\math...| commands instead. These commands are redefined using % |\@renewfontswitch|, a command with three arguments: the user % command to be defined; \LaTeX\ commands to execute in text mode % and \LaTeX\ commands to execute in math mode. % \begin{macro}{\rm} % \begin{macro}{\tt} % \begin{macro}{\sf} % The commands to change the family. % \begin{macrocode} \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\bf} % The command to change to the bold series. One should use % |\mdseries| to explicitly switch back to medium series. % \begin{macrocode} \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} % \end{macrocode} % \end{macro} % \begin{macro}{\sl} % \begin{macro}{\it} % \begin{macro}{\sc} % And the commands to change the shape of the font. The slanted and % small caps shapes are not available by default as math alphabets, % so those changes do nothing in math mode. One should use % |\upshape| to explicitly change back to the upright shape. % \begin{macrocode} \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\relax} \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\relax} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\cal} % \begin{macro}{\mit} % The commands |\cal| and |\mit| should only be used in math mode, % outside math mode they have no effect. Currently the New Font % Selection Scheme defines these commands to generate warning % messages. Therefore we have to define them `by hand'. % \begin{macrocode} \DeclareRobustCommand*{\cal}{\@fontswitch{\relax}{\mathcal}} \DeclareRobustCommand*{\mit}{\@fontswitch{\relax}{\mathnormal}} % \end{macrocode} % \end{macro} % \end{macro} % \subsection{Footnotes} % \begin{macro}{\footnoterule} % Usually, footnotes are separated from the main body of the text % by a small rule. This rule is drawn by the macro |\footnoterule|. % We have to make sure that the rule takes no vertical space (see % \file{plain.tex}) so we compensate for the natural height of the % rule of 0.4pt by adding the right amount of vertical skip. % To prevent the rule from colliding with the footnote we first add % a little negative vertical skip, then we put the rule and make % sure we end up at the same point where we begun this operation. % \begin{macrocode} \renewcommand\footnoterule{% \kern-\p@ \hrule \@width .4\columnwidth \kern .6\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\c@footnote} % A counter for footnotes. % \begin{macrocode} % \newcounter{footnote} % \end{macrocode} % \end{macro} % \begin{macro}{\@makefntext} % The footnote mechanism of \LaTeX{} calls the macro |\@makefntext| % to produce the actual footnote. The macro gets the text of the % footnote as its argument and should use |\@makefnmark| to produce % the mark of the footnote. The macro |\@makefntext| is called when % effectively inside a |\parbox| of width |\columnwidth| (i.e., % with |\hsize| = |\columnwidth|). % An example of what can be achieved is given by the following piece % of \TeX\ code. % \begin{verbatim} % \long\def\@makefntext#1{% % \@setpar{\@@par % \@tempdima = \hsize % \advance\@tempdima-10pt % \parshape \@ne 10pt \@tempdima}% % \par % \parindent 1em\noindent % \hbox to \z@{\hss\@makefnmark}#1} % \end{verbatim} % The effect of this definition is that all lines of the footnote % are indented by 10pt, while the first line of a new paragraph is % indented by 1em. To change these dimensions, just substitute the % desired value for `10pt' (in both places) or `1em'. The mark is % flush right against the footnote. % In these document class we use a simpler macro, in which the % footnote text is set like an ordinary text paragraph, with no % indentation except on the first line of a paragraph, and the % first line of the footnote. Thus, all the macro must do is set % |\parindent| to the appropriate value for succeeding paragraphs % and put the proper indentation before the mark. % \begin{macrocode} \long\def\@makefntext#1{% \noindent \hangindent 5\p@ \hbox to5\p@{\hss\@makefnmark}#1} % \end{macrocode} % \end{macro} % \begin{macro}{\@makefnmark} % The footnote markers that are printed in the text to point to the % footnotes should be produced by the macro |\@makefnmark|. We use % the default definition for it. % \begin{macrocode} %\def\@makefnmark{\hbox{$^{\@thefnmark}\m@th$}} % \end{macrocode} % \end{macro} % \subsection{Two column mode} % \begin{macro}{\columnsep} % This gives the distance between two columns in two column mode. % \begin{macrocode} \setlength\columnsep{10\p@} % \end{macrocode} % \end{macro} % \begin{macro}{\columnseprule} % This gives the width of the rule between two columns in two % column mode. We have no visible rule. % \begin{macrocode} \setlength\columnseprule{0\p@} % \end{macrocode} % \end{macro} % \subsection{The page style} % We have \pstyle{empty} pages in this document class by % default. We use arabic page numbers. % \begin{macrocode} \pagestyle{empty} \pagenumbering{arabic} % \end{macrocode} % \subsection{Single or double sided printing} % We don't try to make each page as long as all the others. % \begin{macrocode} \raggedbottom % \end{macrocode} % \begin{macro}{\@texttop} % The document class letter sets |\@texttop| to |\vskip| 0pt plus % .00006fil on the first page of a letter, which centers a short % letter on the page. This fil value may have to be changed for % other letterheads. This setting has to be done after % |\raggedbottom| is executed, since the latter sets |\@texttop| to % |\relax|. % \begin{macrocode} \def\@texttop{\ifnum\c@page=1\vskip \z@ plus.00006fil\relax\fi} % \end{macrocode} % \end{macro} % We always start in one column mode. % \begin{macrocode} \onecolumn % % \end{macrocode} % \section{External options to the standard document classes} % \subsection{Left equation numbering} % \begin{macro}{\@eqnnum} % To put the equation number on the left side of an equation we % have to use a little trick. The number is shifted |\displaywidth| % to the left inside a box of (approximately) zero width. This % fails when the quation is too wide, the equation number than may % overprint the equation itself. % \begin{macrocode} %<*leqno> \renewcommand{\@eqnnum}{\hbox to .01\p@{}% \rlap{\reset@font\rmfamily \hskip -\displaywidth(\theequation)}} % % \end{macrocode} % \end{macro} % \subsection{Flush left equations} % To get the displayed math environments to print the contents % flush left (with an indentation) we have to redefine all of % \LaTeXe's displayed math environments. % \begin{macro}{\mathindent} % The amount of indentation of the equations is stored in a register. % \begin{macrocode} %<*fleqn> \newdimen\mathindent % \end{macrocode} % The setting of |\mathindent| has to be deferred until the class % file has been processed, because |\leftmargini| is still 0pt % wide at the moment \file{fleqn.clo} is read in. % \begin{macrocode} \AtEndOfClass{\mathindent\leftmargini} % \end{macrocode} % \end{macro} % \begin{macro}{\[} % Begin display math; % \begin{macrocode} \renewcommand{\[}{\relax \ifmmode\@badmath \else \begin{trivlist}% \@beginparpenalty\predisplaypenalty \@endparpenalty\postdisplaypenalty \item[]\leavevmode \hbox to\linewidth\bgroup $\m@th\displaystyle %$ \hskip\mathindent\bgroup \fi} % \end{macrocode} % \end{macro} % \begin{macro}{\]} % end display math; % \begin{macrocode} \renewcommand{\]}{\relax \ifmmode \egroup $\hfil% $ \egroup \end{trivlist}% \else \@badmath \fi} % \end{macrocode} % \end{macro} % \begin{environment}{equation} % The \textsf{equation} environment % \begin{macrocode} \renewenvironment{equation}% {\@beginparpenalty\predisplaypenalty \@endparpenalty\postdisplaypenalty \refstepcounter{equation}% \trivlist \item[]\leavevmode \hbox to\linewidth\bgroup $\m@th% $ \displaystyle \hskip\mathindent}% {$\hfil % $ \displaywidth\linewidth\hbox{\@eqnnum}% \egroup \endtrivlist} % \end{macrocode} % \end{environment} % \begin{environment}{eqnarray} % The \textsf{eqnarray} environment % \begin{macrocode} \renewenvironment{eqnarray}{% \stepcounter{equation}% \def\@currentlabel{\p@equation\theequation}% \global\@eqnswtrue\m@th \global\@eqcnt\z@ \tabskip\mathindent \let\\=\@eqncr \setlength{\abovedisplayskip}{\topsep}% \ifvmode \addtolength{\abovedisplayskip}{\partopsep}% \fi % \end{macrocode} % When the documentclass uses a non-zero |\parskip| setting the % |\topsep| might have a negative value to compensate for % that. Therefor we add |\parskip| to |\abovedisplayskip|. % \begin{macrocode} \addtolength{\abovedisplayskip}{\parskip}% \setlength{\belowdisplayskip}{\abovedisplayskip}% \setlength{\belowdisplayshortskip}{\abovedisplayskip}% \setlength{\abovedisplayshortskip}{\abovedisplayskip}% $$\everycr{}\halign to\linewidth% $$ \bgroup \hskip\@centering $\displaystyle\tabskip\z@skip{##}$\@eqnsel&% \global\@eqcnt\@ne \hskip \tw@\arraycolsep \hfil${##}$\hfil&% \global\@eqcnt\tw@ \hskip \tw@\arraycolsep $\displaystyle{##}$\hfil \tabskip\@centering&% \global\@eqcnt\thr@@ \hbox to \z@\bgroup\hss##\egroup\tabskip\z@skip\cr}% {\@@eqncr \egroup \global\advance\c@equation\m@ne$$% $$ \global\@ignoretrue } % % \end{macrocode} % \end{environment} % \Finale \endinput % End of file `lettGF.cls'.